Many modern computing applications include online features, allowing the application to access data stored on a remote server. For example, multiplayer games may access a remote server, and many content applications also may access a remote server. Service providers may charge for access to online data and thus may authenticate client applications. Typical solutions may create a trusted communication channel between a client device and the remote server, for example using a secure network connection. However, the client application may be an ordinary, unprotected client application executed by the client device, and thus the server may not be assured of the authenticity of the client application.